﻿using System;
using System.Collections.Generic;
using FluorineFx;
using Neturion.Dados;
using Neturion.Fachadas;

namespace Neturion.Servicos
{
    [RemotingService]
    public class ServicoPessoa
    {
        public Pessoa Inserir(Pessoa pessoa, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Inserir(pessoa, usuarioPermissao);
        }

        public Pessoa Atualizar(Pessoa pessoa, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().Atualizar(pessoa, usuarioPermissao);
        }

        public void Excluir(Pessoa pessoa, Usuario usuarioPermissao)
        {
            Fachada.GetInstancia().Excluir(pessoa, usuarioPermissao);
        }

        public Pessoa ObterPessoaPorId(int id, Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterPessoaPorId(id, usuarioPermissao);
        }

        public IList<Pessoa> ObterTodosPessoas(Usuario usuarioPermissao)
        {
            return Fachada.GetInstancia().ObterTodosPessoas(usuarioPermissao);
        }

        public IList<Pessoa> ObterTodosPessoas(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, string nomeRazaoSocial, string apelidoFantasia, string nomeReduzido, string cpfCnpj, Midia midia, EnumTipoPessoa enumTipoPessoa, DateTime? dataNascimentoAbertura, DateTime? inicioVigencia, DateTime? fimVigencia)
        {
            return Fachada.GetInstancia().ObterTodosPessoas(inicio, quantidade, quantidadeMinima, usuarioPermissao, nomeRazaoSocial, apelidoFantasia, nomeReduzido, cpfCnpj, midia, enumTipoPessoa, dataNascimentoAbertura, inicioVigencia, fimVigencia);
        }

        public IList<Pessoa> ObterTodosPessoas(int inicio, int quantidade, int quantidadeMinima, Usuario usuarioPermissao, string nomeRazaoSocial, string apelidoFantasia, string nomeReduzido, string cpfCnpj, Midia midia, EnumTipoPessoa enumTipoPessoa, EnumTipoSexo enumTipoSexo, EnumEscolaridade enumEscolaridade, EnumEstadoCivil enumEstadoCivil, DateTime? dataNascimentoAberturaDe, DateTime? dataNascimentoAberturaAte, DateTime? cadastroDe, DateTime? cadastroAte, DateTime? inicioVigenciaDe, DateTime? inicioVigenciaAte, DateTime? fimVigenciaDe, DateTime? fimVigenciaAte)
        {
            return Fachada.GetInstancia().ObterTodosPessoas(inicio, quantidade, quantidadeMinima, usuarioPermissao, nomeRazaoSocial, apelidoFantasia, nomeReduzido, cpfCnpj, midia, enumTipoPessoa, enumTipoSexo, enumEscolaridade, enumEstadoCivil, dataNascimentoAberturaDe, dataNascimentoAberturaAte, cadastroDe, cadastroAte, inicioVigenciaDe, inicioVigenciaAte, fimVigenciaDe, fimVigenciaAte);
        }

        public Pessoa ObterPessoaPorCpfCnpj(Usuario usuarioPermissao, string cpfCnpj)
        {
            return Fachada.GetInstancia().ObterPessoaPorCpfCnpj(usuarioPermissao, cpfCnpj);
        }

        public IList<Pessoa> ObterPessoaPorDescricao(Usuario usuarioPermissao, string descricao)
        {

            return Fachada.GetInstancia().ObterPessoaPorDescricao(usuarioPermissao, descricao);
        }

        public Email ObterEmailVigentePessoa(Usuario usuarioPermissao, Pessoa pessoa)
        {
            return Fachada.GetInstancia().ObterEmailVigentePessoa(usuarioPermissao, pessoa);
        }

        public Telefone ObterTelefoneVigentePessoa(Usuario usuarioPermissao, Pessoa pessoa, EnumTipoTelefone tipoTelefone)
        {
            return Fachada.GetInstancia().ObterTelefoneVigentePessoa(usuarioPermissao, pessoa, tipoTelefone);
        }

        public Endereco ObterEnderecoVigentePessoa(Usuario usuarioPermissao, Pessoa pessoa, int tipo)
        {
            return Fachada.GetInstancia().ObterEnderecoVigentePessoa(usuarioPermissao, pessoa, tipo);
        }
    }
}